home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Finder Dungeon / source code / MoreFiles 1.4.6 / Pascal Interfaces / MoreFilesExtras.p < prev    next >
Encoding:
Text File  |  1997-06-28  |  22.1 KB  |  735 lines  |  [TEXT/MPS ]

  1. UNIT MoreFilesExtras;
  2.  
  3. {    Apple Macintosh Developer Technical Support                                }
  4. {                                                                            }
  5. {    A collection of useful high-level File Manager routines.                }
  6. {    by Jim Luther, Apple Developer Technical Support Emeritus                }
  7. {                                                                            }
  8. {    File:        MoreFilesExtras.p                                            }
  9. {                                                                            }
  10. {    Copyright © 1992-1996 Apple Computer, Inc.                                }
  11. {    All rights reserved.                                                    }
  12. {                                                                            }
  13. {    You may incorporate this sample code into your applications without        }
  14. {    restriction, though the sample code has been provided "AS IS" and the    }
  15. {    responsibility for its operation is 100% yours.  However, what you are    }
  16. {    not permitted to do is to redistribute the source as "DSC Sample Code"    }
  17. {    after having made changes. If you're going to re-distribute the source,    }
  18. {    we require that you make it clear in the source that the code was        }
  19. {    descended from Apple Sample Code, but that you've made changes.            }
  20.  
  21.  
  22. INTERFACE
  23.  
  24.     USES
  25.         Types, Files, Finder;
  26.  
  27.     CONST
  28.         {    Deny mode permissions for use with the HOpenAware, HOpenRFAware,    }
  29.         {    FSpOpenAware, and FSpOpenRFAware functions.                            }
  30.  
  31.         dmNone = $0000;
  32.         dmNoneDenyRd = $0010;
  33.         dmNoneDenyWr = $0020;
  34.         dmNoneDenyRdWr = $0030;
  35.         dmRd = $0001;    { Single writer, multiple readers; the readers }
  36.         dmRdDenyRd = $0011;
  37.         dmRdDenyWr = $0021;    { Browsing - equivalent to fsRdPerm }
  38.         dmRdDenyRdWr = $0031;
  39.         dmWr = $0002;
  40.         dmWrDenyRd = $0012;
  41.         dmWrDenyWr = $0022;
  42.         dmWrDenyRdWr = $0032;
  43.         dmRdWr = $0003;    { Shared access - equivalent to fsRdWrShPerm }
  44.         dmRdWrDenyRd = $0013;
  45.         dmRdWrDenyWr = $0023;    { Single writer, multiple readers; the writer }
  46.         dmRdWrDenyRdWr = $0033;    { Exclusive access - equivalent to fsRdWrPerm }
  47.  
  48.         {    Bit masks to get common information out of ioACUser returned by            }
  49.         {    PBGetCatInfo (remember to clear ioACUser before calling PBGetCatInfo    }
  50.         {    since some file systems don't bother to set this field).                }
  51.         {                                                                            }
  52.         {    Use the GetDirAccessRestrictions or FSpGetDirAccessRestrictions            }
  53.         {    functions to retrieve the ioACUser access restrictions byte for            }
  54.         {    a folder.                                                                }
  55.         {                                                                            }
  56.         {    Note:    The access restriction byte returned by PBGetCatInfo is the        }
  57.         {            2's complement of the user's privileges byte returned in        }
  58.         {            ioACAccess by PBHGetDirAccess.                                    }
  59.  
  60.         { bits defined in ioACUser }
  61.         acUserNoSeeFoldersMask = $01;
  62.         acUserNoSeeFilesMask = $02;
  63.         acUserNoMakeChangesMask = $04;
  64.         acUserNotOwnerMask = $80;
  65.  
  66.         { mask for just the access restriction bits }
  67.         acUserAccessMask = $07;
  68.  
  69.         { common access privilege settings }
  70.         acUserFull = $00;                        { no access restiction bits on }
  71.         acUserNone = acUserAccessMask;            { all access restiction bits on }
  72.         acUserDropBox = acUserNoSeeFoldersMask + acUserNoSeeFilesMask; { make changes, but not see files or folders }
  73.         acUserBulletinBoard = acUserNoMakeChangesMask;    { see files and folders, but not make changes }
  74.  
  75.  
  76. {    For those times where you need to use more than one kind of                }
  77. {    File Manager parameter block but don't feel like wasting stack space,    }
  78. {    here's a parameter block you can reuse.                                    }
  79.  
  80. {$PUSH}
  81. {$ALIGN MAC68K}
  82.  
  83.     TYPE
  84. {$IFC THINK_Pascal }
  85.         SInt8 = SignedByte;
  86.         UInt32 = LONGINT;
  87.         UnsignedWide = RECORD
  88.                 hi: UInt32;
  89.                 lo: UInt32;
  90.             END;
  91. {$ENDC}
  92.         UniversalFMPBHandle = ^UniversalFMPBPtr;
  93.         UniversalFMPBPtr = ^UniversalFMPB;
  94.         UniversalFMPB = RECORD
  95.                 CASE Integer OF
  96.                     1: (
  97.                             PB: ParamBlockRec
  98.                     );
  99.                     2: (
  100.                             ciPB: CInfoPBRec
  101.                     );
  102.                     3: (
  103.                             dtPB: DTPBRec
  104.                     );
  105.                     4: (
  106.                             hPB: HParamBlockRec
  107.                     );
  108.                     5: (
  109.                             cmPB: CMovePBRec
  110.                     );
  111.                     6: (
  112.                             wdPB: WDPBRec
  113.                     );
  114.                     7: (
  115.                             fcbPB: FCBPBRec
  116.                     );
  117.             END;
  118.  
  119.  
  120. {    Used by GetUGEntries to return user or group lists.                        }
  121.  
  122.         UGEntryHandle = ^UGEntryPtr;
  123.         UGEntryPtr = ^UGEntry;
  124.         UGEntry = RECORD
  125.                 objType: Integer;
  126.                 objID: LongInt;
  127.                 name: Str31;
  128.             END;
  129.  
  130.  
  131. {    I use the following record instead of the AFPVolMountInfo structure        }
  132. {    in Files.p                                                                }
  133.  
  134.         Str8 = STRING[8];
  135.         MyAFPVolMountInfoHandle = ^MyAFPVolMountInfoPtr;
  136.         MyAFPVolMountInfoPtr = ^MyAFPVolMountInfo;
  137.         MyAFPVolMountInfo = RECORD
  138.                 length: Integer;                { length of this record }
  139.                 media: VolumeType;                { type of media, always AppleShareMediaType }
  140.                 flags: Integer;                    { 0 = normal mount; set bit 0 to inhibit greeting messages }
  141.                 nbpInterval: SignedByte;        { NBP interval parameter; 7 is a good choice }
  142.                 nbpCount: SignedByte;            { NBP count parameter; 5 is a good choice }
  143.                 uamType: Integer;                { User Authentication Method }
  144.                 zoneNameOffset: Integer;        { offset from start of record to zoneName }
  145.                 serverNameOffset: Integer;        { offset from start of record to serverName }
  146.                 volNameOffset: Integer;            { offset from start of record to volName }
  147.                 userNameOffset: Integer;        { offset from start of record to userName }
  148.                 userPasswordOffset: Integer;    { offset from start of record to userPassword }
  149.                 volPasswordOffset: Integer;        { offset from start of record to volPassword }
  150.                 zoneName: Str31;                { server's AppleTalk zone name }
  151.                 serverName: Str31;                { server name }
  152.                 volName: Str27;                    { volume name }
  153.                 userName: Str31;                { user name (zero length Pascal string for guest) }
  154.                 userPassword: Str8;                { user password (zero length Pascal string if no user password) }
  155.                 volPassword: Str8;                { volume password (zero length Pascal string if no volume password) }
  156.             END;
  157.  
  158. {$ALIGN RESET}
  159. {$POP}
  160.  
  161.  
  162. {***************************************************************************}
  163.  
  164.     {    Functions to get information out of GetVolParmsInfoBuffer.    }
  165.     {    (implemented in this Unit).                                    }
  166.  
  167.     FUNCTION isNetworkVolume (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  168.     FUNCTION hasLimitFCBs (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  169.     FUNCTION hasLocalWList (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  170.     FUNCTION hasNoMiniFndr (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  171.     FUNCTION hasNoVNEdit (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  172.     FUNCTION hasNoLclSync (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  173.     FUNCTION hasTrshOffLine (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  174.     FUNCTION hasNoSwitchTo (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  175.     FUNCTION hasNoDeskItems (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  176.     FUNCTION hasNoBootBlks (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  177.     FUNCTION hasAccessCntl (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  178.     FUNCTION hasNoSysDir (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  179.     FUNCTION hasExtFSVol (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  180.     FUNCTION hasOpenDeny (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  181.     FUNCTION hasCopyFile (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  182.     FUNCTION hasMoveRename (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  183.     FUNCTION hasDesktopMgr (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  184.     FUNCTION hasShortName (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  185.     FUNCTION hasFolderLock (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  186.     FUNCTION hasPersonalAccessPrivileges (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  187.     FUNCTION hasUserGroupList (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  188.     FUNCTION hasCatSearch (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  189.     FUNCTION hasFileIDs (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  190.     FUNCTION hasBTreeMgr (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  191.     FUNCTION hasBlankAccessPrivileges (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  192.  
  193.     {    Functions to get common information out of ioACUser.    }
  194.     {    (implemented in this Unit).                                }
  195.     FUNCTION userIsOwner (ioACUser: SInt8): Boolean;
  196.     FUNCTION userHasFullAccess (ioACUser: SInt8): Boolean;
  197.     FUNCTION userHasDropBoxAccess (ioACUser: SInt8): Boolean;
  198.     FUNCTION userHasBulletinBoard (ioACUser: SInt8): Boolean;
  199.     FUNCTION userHasNoAccess (ioACUser: SInt8): Boolean;
  200.  
  201.  
  202. {***************************************************************************}
  203.  
  204.  
  205.     PROCEDURE TruncPString (destination: StringPtr;
  206.                                     source: StringPtr;
  207.                                     maxLength: Integer);
  208.  
  209.     FUNCTION GetTempBuffer (buffReqSize: LONGINT;
  210.                                     VAR buffActSize: LONGINT): Ptr;
  211.  
  212.     FUNCTION GetVolumeInfoNoName (pathname: StringPtr;
  213.                                     vRefNum: Integer;
  214.                                     VAR pb: HParamBlockRec): OSErr;
  215.  
  216.     FUNCTION GetCatInfoNoName (vRefNum: Integer;
  217.                                     dirID: LongInt;
  218.                                     name: StringPtr;
  219.                                     VAR pb: CInfoPBRec): OSErr;
  220.  
  221.     FUNCTION DetermineVRefNum (pathname: StringPtr;
  222.                                     vRefNum: Integer;
  223.                                     VAR realVRefNum: Integer): OSErr;
  224.  
  225.     FUNCTION HGetVInfo (volReference: Integer;
  226.                                     volName: StringPtr;
  227.                                     VAR vRefNum: Integer;
  228.                                     VAR freeBytes: LongInt;
  229.                                     VAR totalBytes: LongInt): OSErr;
  230.  
  231.     FUNCTION XGetVInfo (volReference: Integer;
  232.                                     volName: StringPtr;
  233.                                     VAR vRefNum: Integer;
  234.                                     VAR freeBytes: UnsignedWide;
  235.                                     VAR totalBytes: UnsignedWide): OSErr;
  236.  
  237.     FUNCTION CheckVolLock (pathname: StringPtr;
  238.                                     vRefNum: Integer): OSErr;
  239.  
  240.     FUNCTION GetDriverName (driverRefNum: Integer;
  241.                                     VAR driverName: Str255): OSErr;
  242.  
  243.     FUNCTION FindDrive (pathname: StringPtr;
  244.                                     vRefNum: Integer;
  245.                                     VAR driveQElementPtr: DrvQElPtr): OSErr;
  246.  
  247.     FUNCTION GetVolFileSystemID (pathname: StringPtr;
  248.                                     vRefNum: Integer;
  249.                                     VAR fileSystemID: Integer): OSErr;
  250.                                    
  251.     FUNCTION GetVolState (pathname: StringPtr;
  252.                                     vRefNum: Integer;
  253.                                     VAR volumeOnline: Boolean;
  254.                                     VAR volumeEjected: Boolean;
  255.                                     VAR driveEjectable: Boolean;
  256.                                     VAR driverWantsEject: Boolean): OSErr;
  257.                                    
  258.     FUNCTION UnmountAndEject (pathname: StringPtr;
  259.                                     vRefNum: Integer): OSErr;
  260.  
  261.     FUNCTION OnLine (volumes: FSSpecPtr;
  262.                                     reqVolCount: Integer;
  263.                                     VAR actVolCount: Integer;
  264.                                     VAR volIndex: Integer): OSErr;
  265.  
  266.     FUNCTION SetDefault (newVRefNum: Integer;
  267.                                     newDirID: LongInt;
  268.                                     VAR oldVRefNum: Integer;
  269.                                     VAR oldDirID: LongInt): OSErr;
  270.  
  271.     FUNCTION RestoreDefault (oldVRefNum: Integer;
  272.                                     oldDirID: LongInt): OSErr;
  273.  
  274.     FUNCTION GetDInfo (vRefNum: Integer;
  275.                                     dirID: LongInt;
  276.                                     name: StringPtr;
  277.                                     VAR fndrInfo: DInfo): OSErr;
  278.  
  279.     FUNCTION FSpGetDInfo ({CONST}
  280.                                     VAR spec: FSSpec;
  281.                                     VAR fndrInfo: DInfo): OSErr;
  282.  
  283.     FUNCTION SetDInfo (vRefNum: Integer;
  284.                                     dirID: LongInt;
  285.                                     name: StringPtr;
  286.                                     fndrInfo: DInfo): OSErr;
  287.  
  288.     FUNCTION FSpSetDInfo ({CONST}
  289.                                     VAR spec: FSSpec;
  290.                                     fndrInfo: DInfo): OSErr;
  291.  
  292.     FUNCTION GetDirectoryID (vRefNum: Integer;
  293.                                     dirID: LongInt;
  294.                                     name: StringPtr;
  295.                                     VAR theDirID: LongInt;
  296.                                     VAR isDirectory: Boolean): OSErr;
  297.  
  298.     FUNCTION FSpGetDirectoryID ({CONST}
  299.                                     VAR spec: FSSpec;
  300.                                     VAR theDirID: LongInt;
  301.                                     VAR isDirectory: Boolean): OSErr;
  302.  
  303.     FUNCTION GetDirName (vRefNum: Integer;
  304.                                     dirID: LongInt;
  305.                                     VAR name: Str31): OSErr;
  306.  
  307.     FUNCTION GetIOACUser (vRefNum: Integer;
  308.                                     dirID: LongInt;
  309.                                     name: StringPtr;
  310.                                     VAR ioACUser: SInt8): OSErr;
  311.  
  312.     FUNCTION FSpGetIOACUser (vRefNum: Integer;
  313.                                     dirID: LongInt;
  314.                                     name: StringPtr;
  315.                                     VAR ioACUser: SInt8): OSErr;
  316.  
  317.     FUNCTION GetParentID (vRefNum: Integer;
  318.                                     dirID: LongInt;
  319.                                     name: StringPtr;
  320.                                     VAR parID: LongInt): OSErr;
  321.  
  322.     FUNCTION GetFilenameFromPathname (pathname: Str255;
  323.                                     VAR filename: Str255): OSErr;
  324.  
  325.     FUNCTION GetObjectLocation (vRefNum: Integer;
  326.                                     dirID: LongInt;
  327.                                     pathname: StringPtr;
  328.                                     VAR realVRefNum: Integer;
  329.                                     VAR realParID: LongInt;
  330.                                     VAR realName: Str255;
  331.                                     VAR isDirectory: Boolean): OSErr;
  332.  
  333.     FUNCTION GetDirItems (vRefNum: Integer;
  334.                                     dirID: LongInt;
  335.                                     name: StringPtr;
  336.                                     getFiles: Boolean;
  337.                                     getDirectories: Boolean;
  338.                                     items: FSSpecPtr;
  339.                                     reqItemCount: Integer;
  340.                                     VAR actItemCount: Integer;
  341.                                     VAR itemIndex: Integer): OSErr;
  342.  
  343.     FUNCTION DeleteDirectoryContents (vRefNum: Integer;
  344.                                     dirID: LongInt;
  345.                                     name: StringPtr): OSErr;
  346.  
  347.     FUNCTION DeleteDirectory (vRefNum: Integer;
  348.                                     dirID: LongInt;
  349.                                     name: StringPtr): OSErr;
  350.  
  351.     FUNCTION CheckObjectLock (vRefNum: Integer;
  352.                                     dirID: LongInt;
  353.                                     name: StringPtr): OSErr;
  354.  
  355.     FUNCTION FSpCheckObjectLock ({CONST}
  356.                                     VAR spec: FSSpec): OSErr;
  357.  
  358.     FUNCTION GetFileSize (vRefNum: Integer;
  359.                                     dirID: LongInt;
  360.                                     fileName: Str255;
  361.                                     VAR dataSize: LONGINT;
  362.                                     VAR rsrcSize: LONGINT): OSErr;
  363.  
  364.     FUNCTION FSpGetFileSize ({CONST}
  365.                                     VAR spec: FSSpec;
  366.                                     VAR dataSize: LONGINT;
  367.                                     VAR rsrcSize: LONGINT): OSErr;
  368.  
  369.     FUNCTION BumpDate (vRefNum: Integer;
  370.                                     dirID: LongInt;
  371.                                     name: StringPtr): OSErr;
  372.  
  373.     FUNCTION FSpBumpDate ({CONST}
  374.                                     VAR spec: FSSpec): OSErr;
  375.  
  376.  
  377.     FUNCTION ChangeCreatorType (vRefNum: Integer;
  378.                                     dirID: LongInt;
  379.                                     name: Str255;
  380.                                     creator: OSType;
  381.                                     fileType: OSType): OSErr;
  382.  
  383.     FUNCTION FSpChangeCreatorType ({CONST}
  384.                                     VAR spec: FSSpec;
  385.                                     creator: OSType;
  386.                                     fileType: OSType): OSErr;
  387.  
  388.     FUNCTION ChangeFDFlags (vRefNum: Integer;
  389.                                     dirID: LongInt;
  390.                                     name: StringPtr;
  391.                                     setBits: Boolean;
  392.                                     flagBits: Integer): OSErr;
  393.  
  394.     FUNCTION FSpChangeFDFlags ({CONST}
  395.                                     VAR spec: FSSpec;
  396.                                     setBits: Boolean;
  397.                                     flagBits: Integer): OSErr;
  398.  
  399.     FUNCTION SetIsInvisible (vRefNum: Integer;
  400.                                     dirID: LongInt;
  401.                                     name: StringPtr): OSErr;
  402.  
  403.     FUNCTION FSpSetIsInvisible ({CONST}
  404.                                     VAR spec: FSSpec): OSErr;
  405.  
  406.     FUNCTION ClearIsInvisible (vRefNum: Integer;
  407.                                     dirID: LongInt;
  408.                                     name: StringPtr): OSErr;
  409.  
  410.     FUNCTION FSpClearIsInvisible ({CONST}
  411.                                     VAR spec: FSSpec): OSErr;
  412.  
  413.     FUNCTION SetNameLocked (vRefNum: Integer;
  414.                                     dirID: LongInt;
  415.                                     name: StringPtr): OSErr;
  416.  
  417.     FUNCTION FSpSetNameLocked ({CONST}
  418.                                     VAR spec: FSSpec): OSErr;
  419.  
  420.     FUNCTION ClearNameLocked (vRefNum: Integer;
  421.                                     dirID: LongInt;
  422.                                     name: StringPtr): OSErr;
  423.  
  424.     FUNCTION FSpClearNameLocked ({CONST}
  425.                                     VAR spec: FSSpec): OSErr;
  426.  
  427.     FUNCTION SetIsStationery (vRefNum: Integer;
  428.                                     dirID: LongInt;
  429.                                     name: Str255): OSErr;
  430.  
  431.     FUNCTION FSpSetIsStationery ({CONST}
  432.                                     VAR spec: FSSpec): OSErr;
  433.  
  434.     FUNCTION ClearIsStationery (vRefNum: Integer;
  435.                                     dirID: LongInt;
  436.                                     name: Str255): OSErr;
  437.  
  438.     FUNCTION FSpClearIsStationery ({CONST}
  439.                                     VAR spec: FSSpec): OSErr;
  440.  
  441.     FUNCTION SetHasCustomIcon (vRefNum: Integer;
  442.                                     dirID: LongInt;
  443.                                     name: StringPtr): OSErr;
  444.  
  445.     FUNCTION FSpSetHasCustomIcon ({CONST}
  446.                                     VAR spec: FSSpec): OSErr;
  447.  
  448.     FUNCTION ClearHasCustomIcon (vRefNum: Integer;
  449.                                     dirID: LongInt;
  450.                                     name: StringPtr): OSErr;
  451.  
  452.     FUNCTION FSpClearHasCustomIcon ({CONST}
  453.                                     VAR spec: FSSpec): OSErr;
  454.  
  455.     FUNCTION ClearHasBeenInited (vRefNum: Integer;
  456.                                     dirID: LongInt;
  457.                                     name: StringPtr): OSErr;
  458.  
  459.     FUNCTION FSpClearHasBeenInited ({CONST}
  460.                                     VAR spec: FSSpec): OSErr;
  461.  
  462.     FUNCTION CopyFileMgrAttributes (srcVRefNum: Integer;
  463.                                     srcDirID: LongInt;
  464.                                     srcName: StringPtr;
  465.                                     dstVRefNum: Integer;
  466.                                     dstDirID: LongInt;
  467.                                     dstName: StringPtr;
  468.                                     copyLockBit: Boolean): OSErr;
  469.  
  470.     FUNCTION FSpCopyFileMgrAttributes ({CONST}
  471.                                     VAR srcSpec: FSSpec;
  472.                                     {CONST}
  473.                                     VAR dstSpec: FSSpec;
  474.                                     copyLockBit: Boolean): OSErr;
  475.  
  476.     FUNCTION HOpenAware (vRefNum: Integer;
  477.                                     dirID: LongInt;
  478.                                     fileName: Str255;
  479.                                     denyModes: Integer;
  480.                                     VAR refNum: Integer): OSErr;
  481.  
  482.     FUNCTION FSpOpenAware ({CONST}
  483.                                     VAR spec: FSSpec;
  484.                                     denyModes: Integer;
  485.                                     VAR refNum: Integer): OSErr;
  486.  
  487.     FUNCTION HOpenRFAware (vRefNum: Integer;
  488.                                     dirID: LongInt;
  489.                                     fileName: Str255;
  490.                                     denyModes: Integer;
  491.                                     VAR refNum: Integer): OSErr;
  492.  
  493.     FUNCTION FSpOpenRFAware ({CONST}
  494.                                     VAR spec: FSSpec;
  495.                                     denyModes: Integer;
  496.                                     VAR refNum: Integer): OSErr;
  497.  
  498.     FUNCTION FSReadNoCache (refNum: Integer;
  499.                                     VAR count: LongInt;
  500.                                     buffPtr: Ptr): OSErr;
  501.  
  502.     FUNCTION FSWriteNoCache (refNum: Integer;
  503.                                     VAR count: LongInt;
  504.                                     buffPtr: Ptr): OSErr;
  505.  
  506.     FUNCTION FSWriteVerify (refNum: Integer;
  507.                                     VAR count: LongInt;
  508.                                     buffPtr: Ptr): OSErr;
  509.  
  510.     FUNCTION CopyFork (srcRefNum: Integer;
  511.                                     dstRefNum: Integer;
  512.                                     copyBufferPtr: Ptr;
  513.                                     copyBufferSize: LongInt): OSErr;
  514.  
  515.     FUNCTION GetFileLocation (refNum: Integer;
  516.                                     VAR vRefNum: Integer;
  517.                                     VAR dirID: LongInt;
  518.                                     fileName: StringPtr): OSErr;
  519.  
  520.     FUNCTION FSpGetFileLocation (refNum: Integer;
  521.                                     VAR spec: FSSpec): OSErr;
  522.  
  523.     FUNCTION CopyDirectoryAccess (srcVRefNum: Integer;
  524.                                     srcDirID: LongInt;
  525.                                     srcName: StringPtr;
  526.                                     dstVRefNum: Integer;
  527.                                     dstDirID: LongInt;
  528.                                     dstName: StringPtr): OSErr;
  529.  
  530.     FUNCTION FSpCopyDirectoryAccess ({CONST}
  531.                                     VAR srcSpec: FSSpec;
  532.                                     {CONST}
  533.                                     VAR dstSpec: FSSpec): OSErr;
  534.  
  535.     FUNCTION HMoveRenameCompat (vRefNum: Integer;
  536.                                     srcDirID: LongInt;
  537.                                     srcName: Str255;
  538.                                     dstDirID: LongInt;
  539.                                     dstpathName: StringPtr;
  540.                                     copyName: StringPtr): OSErr;
  541.  
  542.     FUNCTION FSpMoveRenameCompat ({CONST}
  543.                                     VAR srcSpec: FSSpec;
  544.                                     {CONST}
  545.                                     VAR dstSpec: FSSpec;
  546.                                     copyName: StringPtr): OSErr;
  547.  
  548.     FUNCTION BuildAFPVolMountInfo (theFlags: Integer;
  549.                                     theNBPInterval: SignedByte;
  550.                                     theNBPCount: SignedByte;
  551.                                     theUAMType: Integer;
  552.                                     theZoneName: Str31;
  553.                                     theServerName: Str31;
  554.                                     theVolName: Str27;
  555.                                     theUserName: Str31;
  556.                                     theUserPassWord: Str8;
  557.                                     theVolPassWord: Str8;
  558.                                     theAFPInfo: MyAFPVolMountInfoPtr): OSErr;
  559.  
  560.     FUNCTION RetrieveAFPVolMountInfo (theAFPInfo: AFPVolMountInfoPtr;
  561.                                     VAR theFlags: Integer;
  562.                                     VAR theUAMType: Integer;
  563.                                     theZoneName: StringPtr;
  564.                                     theServerName: StringPtr;
  565.                                     theVolName: StringPtr;
  566.                                     theUserName: StringPtr): OSErr;
  567.  
  568.     FUNCTION GetUGEntries (objType: Integer;
  569.                                     entries: UGEntryPtr;
  570.                                     reqEntryCount: LongInt;
  571.                                     VAR actEntryCount: LongInt;
  572.                                     VAR objID: LongInt): OSErr;
  573.  
  574.  
  575. {***************************************************************************}
  576.  
  577.  
  578. IMPLEMENTATION
  579.  
  580.     {    Functions to get information out of GetVolParmsInfoBuffer.    }
  581.  
  582.     FUNCTION isNetworkVolume (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  583.     BEGIN
  584.         isNetworkVolume := (volParms.vMServerAdr <> 0);
  585.     END;
  586.  
  587.     FUNCTION hasLimitFCBs (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  588.     BEGIN
  589.         hasLimitFCBs := BTST(volParms.vMAttrib, bLimitFCBs);
  590.     END;
  591.  
  592.     FUNCTION hasLocalWList (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  593.     BEGIN
  594.         hasLocalWList := BTST(volParms.vMAttrib, bLocalWList);
  595.     END;
  596.  
  597.     FUNCTION hasNoMiniFndr (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  598.     BEGIN
  599.         hasNoMiniFndr := BTST(volParms.vMAttrib, bNoMiniFndr);
  600.     END;
  601.  
  602.     FUNCTION hasNoVNEdit (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  603.     BEGIN
  604.         hasNoVNEdit := BTST(volParms.vMAttrib, bNoVNEdit);
  605.     END;
  606.  
  607.     FUNCTION hasNoLclSync (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  608.     BEGIN
  609.         hasNoLclSync := BTST(volParms.vMAttrib, bNoLclSync);
  610.     END;
  611.  
  612.     FUNCTION hasTrshOffLine (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  613.     BEGIN
  614.         hasTrshOffLine := BTST(volParms.vMAttrib, bTrshOffLine);
  615.     END;
  616.  
  617.     FUNCTION hasNoSwitchTo (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  618.     BEGIN
  619.         hasNoSwitchTo := BTST(volParms.vMAttrib, bNoSwitchTo);
  620.     END;
  621.  
  622.     FUNCTION hasNoDeskItems (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  623.     BEGIN
  624.         hasNoDeskItems := BTST(volParms.vMAttrib, bNoDeskItems);
  625.     END;
  626.  
  627.     FUNCTION hasNoBootBlks (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  628.     BEGIN
  629.         hasNoBootBlks := BTST(volParms.vMAttrib, bNoBootBlks);
  630.     END;
  631.  
  632.     FUNCTION hasAccessCntl (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  633.     BEGIN
  634.         hasAccessCntl := BTST(volParms.vMAttrib, bAccessCntl);
  635.     END;
  636.  
  637.     FUNCTION hasNoSysDir (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  638.     BEGIN
  639.         hasNoSysDir := BTST(volParms.vMAttrib, bNoSysDir);
  640.     END;
  641.  
  642.     FUNCTION hasExtFSVol (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  643.     BEGIN
  644.         hasExtFSVol := BTST(volParms.vMAttrib, bHasExtFSVol);
  645.     END;
  646.  
  647.     FUNCTION hasOpenDeny (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  648.     BEGIN
  649.         hasOpenDeny := BTST(volParms.vMAttrib, bHasOpenDeny);
  650.     END;
  651.  
  652.     FUNCTION hasCopyFile (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  653.     BEGIN
  654.         hasCopyFile := BTST(volParms.vMAttrib, bHasCopyFile);
  655.     END;
  656.  
  657.     FUNCTION hasMoveRename (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  658.     BEGIN
  659.         hasMoveRename := BTST(volParms.vMAttrib, bHasMoveRename);
  660.     END;
  661.  
  662.     FUNCTION hasDesktopMgr (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  663.     BEGIN
  664.         hasDesktopMgr := BTST(volParms.vMAttrib, bHasDesktopMgr);
  665.     END;
  666.  
  667.     FUNCTION hasShortName (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  668.     BEGIN
  669.         hasShortName := BTST(volParms.vMAttrib, bHasShortName);
  670.     END;
  671.  
  672.     FUNCTION hasFolderLock (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  673.     BEGIN
  674.         hasFolderLock := BTST(volParms.vMAttrib, bHasFolderLock);
  675.     END;
  676.  
  677.     FUNCTION hasPersonalAccessPrivileges (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  678.     BEGIN
  679.         hasPersonalAccessPrivileges := BTST(volParms.vMAttrib, bHasPersonalAccessPrivileges);
  680.     END;
  681.  
  682.     FUNCTION hasUserGroupList (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  683.     BEGIN
  684.         hasUserGroupList := BTST(volParms.vMAttrib, bHasUserGroupList);
  685.     END;
  686.  
  687.     FUNCTION hasCatSearch (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  688.     BEGIN
  689.         hasCatSearch := BTST(volParms.vMAttrib, bHasCatSearch);
  690.     END;
  691.  
  692.     FUNCTION hasFileIDs (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  693.     BEGIN
  694.         hasFileIDs := BTST(volParms.vMAttrib, bHasFileIDs);
  695.     END;
  696.  
  697.     FUNCTION hasBTreeMgr (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  698.     BEGIN
  699.         hasBTreeMgr := BTST(volParms.vMAttrib, bHasBTreeMgr);
  700.     END;
  701.  
  702.     FUNCTION hasBlankAccessPrivileges (VAR volParms: GetVolParmsInfoBuffer): Boolean;
  703.     BEGIN
  704.         hasBlankAccessPrivileges := BTST(volParms.vMAttrib, bHasBlankAccessPrivileges);
  705.     END;
  706.  
  707.     {    Functions for testing ioACUser bits.    }
  708.  
  709.     FUNCTION userIsOwner (ioACUser: SInt8): Boolean;
  710.     BEGIN
  711.         userIsOwner := NOT (BTST(ioACUser, acUserNotOwnerMask));
  712.     END;
  713.  
  714.     FUNCTION userHasFullAccess (ioACUser: SInt8): Boolean;
  715.     BEGIN
  716.         userHasFullAccess := BAND(ioACUser, acUserAccessMask) = acUserFull;
  717.     END;
  718.  
  719.     FUNCTION userHasDropBoxAccess (ioACUser: SInt8): Boolean;
  720.     BEGIN
  721.         userHasDropBoxAccess := BAND(ioACUser, acUserAccessMask) = acUserDropBox;
  722.     END;
  723.  
  724.     FUNCTION userHasBulletinBoard (ioACUser: SInt8): Boolean;
  725.     BEGIN
  726.         userHasBulletinBoard := BAND(ioACUser, acUserAccessMask) = acUserBulletinBoard;
  727.     END;
  728.  
  729.     FUNCTION userHasNoAccess (ioACUser: SInt8): Boolean;
  730.     BEGIN
  731.         userHasNoAccess := BAND(ioACUser, acUserAccessMask) = acUserNone;
  732.     END;
  733.  
  734.  
  735. END.